收集一些关于git的日常操作
git clone
git clone url
根据url将代码克隆到本地git clone url reponame
当自定义前目录名
git status
git status
检查当前文件状态,记录从上次提交后所有文件状态git status -s
显示简洁版的文件状态git status -b
根据分支显示状态信息git status --ignored
显示被忽略文件的状态信息
git add
git add filename
开始跟踪新文件git add -A/*
跟踪所有未跟踪文件,将其放到本地仓库的暂存区
.gitignore
touch .gitignore
创建需要忽略的文件规则,摘自Git
1 | # 此为注释 – 将被 Git 忽略 |
git commit
git commit -m commitInfo
提交到仓库,commitInfo 为提交信息git commit -a -m commitInfo
跳过 git add
操作,自动暂存跟踪过文件的修改,并添加提交信息,注意未跟踪过的文件不能跳过 git add 操作git commit --amend
修改最后一次提交
1 | git commit -m 'initial commit' // 修改最后一次提交 |
git reset
git reset HEAD filename
git commit之后,取消已暂存的文件git reset --hard commitNum
回到某个版本号git reset --hard HEAD^
回退到上一个版本号
git reflog
当你提交或修改分支时,记录每次命令操作,可用于从新版回退到旧版又需要回退到新版时获取最新版commitnum
git checkout
git checkout --[filename]
git add 之后,取消对文件的修改git checkout [branch_name]
切换到某分支git checkout -b [branch_name]
如果没有则新建此分支并切换到
说明: 任何已经提交过的文件对于 git 来说都是可以恢复的,即便已经删除,除了从没有提交过的文件,对于 git 来说就像从没有存在过
git diff
git diff
检查已跟踪文件尚未暂存的文件有哪些改动git diff --cached
已经写入缓存的改动
git rm
git rm file_path
删除暂存区中的文件,工作区上的也会被删除git rm --cached file_path
删除暂存区中的文件,工作区上还会保留git rm -r -n --cached file_path
加上-n
,列出将会删除的远程文件列表git rm -r --cached file_path
删除远程仓库文件列表,记得提交commit,然后push到仓库,才会生效
git config
git config [--local|--global|--systerm] -l
查看仓库级别|全局级别|系统级别的配置信息git conifg --global user.name username
, git config --global user.email email
初次运行时配置,该信息将存在用户主目录下,以后所有的项目提交默认使用此配置信息,如果想针对某个仓库使用其他名字和邮箱,只需要去掉--global
参数即可
git branch
git branch
查看当前本地仓库所有分支,并且能看出当前处于哪个分支上git branch -a
查看仓库所有分支,包括远程分支git branch -v
查看本地仓库各个分支最后一个提交对象的信息git branch -a -v
查看仓库所有分支最后一个提交对象的信息git branch --merged
查看哪些分支已被并入当前分支git branch --no-merged
查看尚未合并的分支git branch -d [branch name]
删除已经被合并的某个分支,前提是前面没有 号git branch -D [branch name]
删除未被合并的某个分支
`git branch | grep ‘bugfix/‘ | xrags git branch -d` 批量删除本地分支 以 bugfix/开头的分支
git remote
git remote
列出远程仓库的简短名字git remote -v
列出远程仓库对应的克隆地址git remote add [shortname] [url]
添加一个远程仓库并起名
git prune
git remote prune -n
预览即将被清除的无效的远程分支git remote prune
清除无效的远程分支
git fetch
git fetch [远程主机名]
拉取远程主机所有分支更新到本地git fetch [远程主机名]:[分支名]
拉取远程主机指定某个分支代码到本地,但是不做合并操作git fetch --prune
拉取远程有效分支
git merge
git merge --abort
合并导致冲突时,放弃合并并试图回到合并前状态git merge
合并提交,当两个分支都有修改时,只创建一个新的提交,之前的合并记录在合并之后会丢失
git rebase
git rebase
当合并两个都有修改的分支时,被合并分支会直接添加到合并分支上,并且此时的 HEAD 并不会随着合并而移到最新提交前,需要再执行 merge 操作使其 HEAD 前移
git push
不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。如果要修改这个设置,可以采用git config命令。
1 | git config --global push.default matching / simple |
git push
将本地分支的更新提交到远程仓库,默认会推送到与本地分支建立追踪关系的分支,如果没有则新建git push [远程主机名] [本地分支名]:[远程分支名]
将本地分支的更新提交到远程仓库的指定分支git push --force origin
强制将本地分支推送到远程上git push --all origin
不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机
git pull
git pull
当前分支只有一个追踪分支,并已经建立关系,可以省略主机名和分支名git pull origin
当前分支与远程已经建立关系,可以省略分支名git pull --rebase
采用 rebase 模式合并,默认是 merge 模式git pull -p
在拉取过程中如果远程分支已删除,加上 -p
参数会同时删掉本地分支,默认情况下是不会删除的git pull [远程主机名] [远程分支名]:[本地分支名]
拉取远程主机某个分支的更新,再与本地的指定分支合并,当远程分支和当前分支合并时,本地分支名可以省略
git stash
git stash
将当前未提交的修改保存到 Git 工作栈中git stash pop
将保存的东西取出来
git cherry pick
git cherry-pick commitid
将另一分支的指定 commitid 合并到当前分支,使用场景: 稳定分支上想合并添加的新功能commitidgit cherry-pick startcommitid...endcommitid
表示将从 start 开始到 end 的commit 合并到当前分支, 区间为左开右闭,如果想包含startcommitid 执行git cherry-pick startcommitid^...endcommitid
扩展
区分本地版本库和远程版本库的状态
git status
查看未提交到远程的提交记录git cherry -v
查看到未传送到远程代码库的提交描述/说明git log [本地分支] ^[远程主机名/远程分支名]
查看指定追踪线路的未传送提交的详细信息git log -p
查看更详细的提交记录
- 撤销操作,代码回滚
只存在工作区,未提交到暂存区
git checkout --[pathname]
git checkout .
当前目录所有修改的文件恢复成未修改的样子git checkout commit_id file_name
取出文件 file_name 在 commit_id 的版本git rm -r --cached file_name
删除已存到暂存区文件,但是还未 commit 的文件
存在暂存区,也就是已经被提交
git revert commit_id
回滚指定commit_id 的代码,会产生一个新的 commit_id,就是将这次的修改给改回去, 会保留之前的修改记录也就是 commit_id,使用场景是:回滚到指定状态的样子,但是修改的提交还需要保留git reset commit_id
回退到指定 commit_id ,不会产生新的 commit_id, 之前的提交会被删除,完全回到文件修改前的状态
新开分支并拉取远程指定分支
1
2git fetch //可以将远程分支信息获取到本地
git checkout -b localbranch_name origin/remote-branchnpm 切换源
1
2
3
4
5// 永久切换
npm config set registry url
// 临时切换
npm install pkg --registry=url使用nrm管理npm
1
2
3
4npm install -g nrm
nrm ls // 列出所有仓库地址
nrm use cnpm // switch registry to cnpm
nrm add 360es http://registry.npm.360es.cn // add registry